#include<stdio.h>
#include<stdlib.h>
//整数的数组形式num是按照从左到右的顺序表示其数字的数组。
//例如对于num =1321,数组形式是[1,3,2,1] 。
//给定num,整数的数组形式,和整数k,返回整数num+k的数组形式 。
int* addToArrayForm(int* A, int ASize, int k, int* returnSize)
{
    int Ksize = 0;
    int Knum = k;
    while (Knum)
    {
        ++Ksize;
        Knum / 10;
    }
    int len = ASize > Ksize ? ASize : Ksize;
    int* reArr = (int*)malloc(sizeof(int) * (len + 1));//创建一个数组存储相加之后的结果
    int Ai = ASize - 1;//原数组下标
    int reti = 0;//新数组的下标
    int nextNum = 0;//进位
    while (len--)
    {
        int a = 0;
        if (Ai >= 0)//为了防止短的在上，相加的时候溢出的问题
        {
            a = A[Ai];
            --Ai;
        }
        int ret = a + k % 10 + nextNum;
        k /= 10;
        if (ret > 9)
        {
            ret -= 10;
            nextNum = 1;
        }
        else
        {
            nextNum = 0;
        }
        reArr[reti] = ret;
        ++reti;
    }
    if (nextNum == 1)//最后的进位
    {
        reArr[reti] = 1;
        ++reti;
    }
    //逆置
    int left = 0;
    int right = reti - 1;
    while (left < right)
    {
        int tmp = reArr[left];
        reArr[left] = reArr[right];
        reArr[right] = tmp;
        left++;
        right--;
    }
    *returnSize = reti;
    return reArr;
}